High availability and resilience to failure is one of the highly desired features of networking in the cloud era. For certain types of customers (e.g., banking), moving to cloud services does not mean sacrificing their “five-nine” service assurance guarantee, where availability is guaranteed 99.999% of the time. It is thus critical to construct redundant fabrics for the tenants' virtual data centers that reside in a service provider's physical data centers. A virtual data center represents a set of service requirements from tenants on various resources such as compute, storage, and networking. Networking plays an important role in the optimization of loads, latency, and redundancy. Compute and storage resources as individual resources cannot be fully utilized without the active participation of networking resources. While portions of high availability have been addressed, creating redundant fabrics to provide non-disruptive continuous access to these compute and storage resources in case of device or link failures has been manual and cumbersome.